/**
 * 最后联系时间管理工具类
 * 用于记录好友的最后联系时间（收到消息或发送消息）
 * 实现微信式的"最近联系人"排序
 */

const STORAGE_KEY = 'last_contact_times'; // 本地存储键

/**
 * 获取所有好友的最后联系时间
 * @returns {Object} { friendId: timestamp }
 */
function getAllContactTimes() {
  try {
    const data = wx.getStorageSync(STORAGE_KEY);
    return data || {};
  } catch (e) {
    console.error('❌ 读取最后联系时间失败:', e);
    return {};
  }
}

/**
 * 保存所有好友的最后联系时间
 * @param {Object} contactTimes 
 */
function saveAllContactTimes(contactTimes) {
  try {
    wx.setStorageSync(STORAGE_KEY, contactTimes);
  } catch (e) {
    console.error('❌ 保存最后联系时间失败:', e);
  }
}

/**
 * 🔥 更新好友的最后联系时间
 * @param {String} friendId - 好友ID（数据库ID或手机号）
 * @param {Number} timestamp - 时间戳（可选，默认当前时间）
 */
function updateContactTime(friendId, timestamp) {
  if (!friendId) return;
  
  const contactTimes = getAllContactTimes();
  const time = timestamp || Date.now();
  
  contactTimes[friendId] = time;
  saveAllContactTimes(contactTimes);
  
  console.log(`📅 更新最后联系时间: ${friendId} → ${new Date(time).toLocaleString()}`);
}

/**
 * 🔥 获取好友的最后联系时间
 * @param {String} friendId - 好友ID（数据库ID或手机号）
 * @returns {Number} 时间戳（如果没有记录则返回0）
 */
function getContactTime(friendId) {
  if (!friendId) return 0;
  
  const contactTimes = getAllContactTimes();
  return contactTimes[friendId] || 0;
}

/**
 * 🔥 删除好友的最后联系时间
 * @param {String} friendId - 好友ID
 */
function removeContactTime(friendId) {
  if (!friendId) return;
  
  const contactTimes = getAllContactTimes();
  if (contactTimes[friendId]) {
    delete contactTimes[friendId];
    saveAllContactTimes(contactTimes);
    console.log(`🗑️ 删除最后联系时间: ${friendId}`);
  }
}

/**
 * 🔥 清除所有联系时间记录
 */
function clearAllContactTimes() {
  saveAllContactTimes({});
  console.log('✅ 清除所有最后联系时间');
}

module.exports = {
  updateContactTime,
  getContactTime,
  removeContactTime,
  clearAllContactTimes,
  getAllContactTimes
};

